package org.absolutezero.shared;

import java.util.List;

import org.absolutezero.model.Recipe;
import org.absolutezero.model.RecipeIngredient;
import org.absolutezero.model.SearchResult;
import org.absolutezero.model.Shelf;

import com.google.web.bindery.requestfactory.shared.InstanceRequest;
import com.google.web.bindery.requestfactory.shared.Request;
import com.google.web.bindery.requestfactory.shared.RequestContext;
import com.google.web.bindery.requestfactory.shared.Service;


@Service(Recipe.class)
public interface RecipeRequest extends RequestContext{

	InstanceRequest<RecipeProxy, Void> persist();
	
	InstanceRequest<RecipeProxy, Void> remove();
	
	Request<List<RecipeProxy>> getUserRecipes(Long userId);
	
	Request<List<RecipeIngredientProxy>> getRecipeIngredients(Long recipeId);
	
	Request<List<RecipeProxy>> getAllRecipes();
	
	Request<List<SearchResultProxy>> findMatchingRecipes(List<ShelfProxy> shelves);
}
